﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;

namespace WPFSchematics.Definition.Shapes
{
    /// <summary>
    /// 图元变换接口。用于描述图元的位移、旋转、缩放等逻辑。
    /// </summary>
    public interface IShapeTransform
    {
        /// <summary>
        /// 最小外接矩形。
        /// </summary>
        Rect Bounds { get; }
        /// <summary>
        /// 几何中心点。
        /// </summary>
        Point Center { get; }
        /// <summary>
        /// 图元变换参考点。
        /// </summary>
        Point TransformCenter { set; get; }
        /// <summary>
        /// 局部变换矩阵。
        /// </summary>
        Matrix LocalMatrix { get; }
        /// <summary>
        /// 图元位置。
        /// </summary>
        Point Location { get; set; }
        /// <summary>
        /// 图元角度。
        /// </summary>
        double Angle { get; set; }
        /// <summary>
        /// 图元缩放比。
        /// </summary>
        Point Scaling { get; set; }
        /// <summary>
        /// 相对位置。
        /// </summary>
        Point DeltaLocation { set; }
        /// <summary>
        /// 相对转角。
        /// </summary>
        double DeltaAngle { set; }
        /// <summary>
        /// 相对缩放比。
        /// </summary>
        Point DeltaScaling { set; }
        /// <summary>
        /// 联动控制（内部使用）。
        /// </summary>
        bool Linkage { set; get; }
        /// <summary>
        /// 
        /// </summary>
        void ResetTransform();
    }
}
